// /******************************************************************************************
//  * Import
//  ******************************************************************************************/

// // module
// import io from 'socket.io-client';

// // project
// import {Collect, Session} from '../..';
// import {Config} from '../../../preset';

// /******************************************************************************************
//  * Export Class
//  ******************************************************************************************/

// export default class Socket {
    
//     /**
//      * 初始化
//      * 
//      * @param {String} url 连接的url地址
//      */
//     constructor(url) {

//         // url字符串
//         this.url = url;

//         // socket对象
//         this.socket = null;

//         // 是否在线指示器
//         this.online = false;

//         // 初始化socket，并连接服务器
//         this.connect();
//     }

//     /**
//      * 初始化socket，并设置默认事件
//      * 
//      * @param {String} url 连接的url地址
//      */
//     connect() {
        
//         // 初始化
//         this.socket = io(this.url);

//         // 连接成功，指示当前已在线
//         this.socket.on('connect', ()=> {
//             this.online = true;
//         });

//         // 连接失败，记录错误，指示当前已离线
//         this.socket.on('connect_error', (err)=> {
//             // Collect.error(Session.get('profile_arrive'), 'func', 'http.js', method, obj.url, obj.data, err);
//             this.online = false;
//         });

//         // 连接超时，记录超时，指示当前已离线
//         this.socket.on('connect_timeout', (timeout)=> {
//             // Collect.error(Session.get('profile_arrive'), 'func', 'http.js', method, obj.url, obj.data, err);
//             this.online = false;
//         });

//         // 任意错误，记录错误
//         this.socket.on('error', (err)=> {
//             // Collect.error(Session.get('profile_arrive'), 'func', 'http.js', method, obj.url, obj.data, err);
//             this.online = false;
//         });

//         // 关闭连接，指示当前已离线
//         this.socket.on('disconnect', (reason)=> {
//             this.online = false;
//         });

//         // 重新连接完成，指示当前已在线
//         this.socket.on('reconnect', (attemptNumber)=> {
//             this.online = true;
//         });

//         // 再次连接失败，记录失败，指示当前已离线，
//         this.socket.on('reconnect_error', (err)=> {
//             // Collect.error(Session.get('profile_arrive'), 'func', 'http.js', method, obj.url, obj.data, err);
//             this.online = false;
//         });

//         // // 试图重新连接
//         // this.socket.on('reconnect_attempt', (attemptNumber)=> { });

//         // // 重新连接中，
//         // this.socket.on('reconnection', (attemptNumber)=> { });

//         // // 重新连接失败
//         // this.socket.on('reconnect_failed', ()=> { });
//     }

//     /**
//      * 重新连接
//      */
//     reconnect() {
//         this.connect();
//     }

//     /**
//      * 发送socket消息
//      * 
//      * @param {String} name 发送的事件名
//      * @param {Any} data 发送的数据
//      */
//     emit(name, data) {

//         // 如果当前在线，则发送
//         if (this.online) {
//             this.socket.emit(name, data);
//         } 
        
//         // 否则，记录错误
//         else {

//         }
//     }

//     /**
//      * 接收socket消息
//      * 
//      * @param {String} name 监听的事件名
//      * @param {Function} callback 监听的回调方法
//      */
//     on(name, callback) {
//         this.socket.on(name, callback);
//     }
// }
